home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / util / boot / AmyShutDown_sr.lha / ShutDownGUI.c < prev    next >
C/C++ Source or Header  |  1997-06-05  |  6KB  |  219 lines

  1. // AmyShutDown MUI code
  2. // Copyright (©) 1997, Infinity Labs Development Organization
  3. // All Rights Reserved.
  4. // Version 1.00
  5. // Author: Manolis S. Pappas
  6.  
  7. #ifndef MAKE_ID
  8. #define MAKE_ID(a,b,c,d) ((ULONG) (a)<<24 | (ULONG) (b)<<16 | (ULONG) (c)<<8 | (ULONG) (d))
  9. #endif
  10.  
  11. /* Libraries */
  12. #include <libraries/mui.h>
  13. #include <libraries/gadtools.h> /* for Barlabel in MenuItem */
  14. #include <exec/memory.h>
  15. #include <exec/types.h>
  16. #include <intuition/intuition.h>
  17. #include <intuition/imageclass.h>
  18.  
  19. /* Prototypes */
  20. #include <proto/muimaster.h>
  21. #include <clib/exec_protos.h>
  22. #include <clib/alib_protos.h>
  23.  
  24. #include "ShutDownGUI.h"
  25.  
  26. // data for the quit image 
  27.  
  28. UWORD quitPaletteRGB4[8] =
  29. {
  30.     0x0999,0x0000,0x0FFF,0x046A,0x0777,0x0AAA,0x0A97,0x0FA9
  31. };
  32.  
  33. ULONG quitPaletteRGB32[26] =
  34. {
  35.     0x00080000,    /* Record Header */
  36.     0x96666666,0x96666666,0x96666666,
  37.     0x00000000,0x00000000,0x00000000,
  38.     0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
  39.     0x3DDDDDDD,0x65555555,0xA2222222,
  40.     0x79999999,0x79999999,0x79999999,
  41.     0xAEEEEEEE,0xAEEEEEEE,0xAEEEEEEE,
  42.     0xAAAAAAAA,0x92222222,0x7DDDDDDD,
  43.     0xFFFFFFFF,0xAAAAAAAA,0x96666666,
  44.     0x00000000    /* Terminator */
  45. };
  46.  
  47. UWORD __chip quitData[102] =
  48. {
  49.     /* Plane 0 */
  50.     0x0000,0x0100,0x7E5E,0x0100,0x79FF,0xC100,0x2642,0xC100,
  51.     0x4CA2,0xE100,0x289E,0xF100,0x58F5,0xD900,0x182B,0x4D00,
  52.     0x4C2C,0xAD00,0x2C3D,0x5D00,0x462E,0xBD00,0x0336,0x7900,
  53.     0x01FC,0xF100,0x00FF,0xE100,0x401F,0x8100,0xFFFF,0xFF00,
  54.     0x0000,0x0000,
  55.     /* Plane 1 */
  56.     0xFFFF,0xFE00,0x801E,0x0000,0x8040,0x8000,0x817C,0x0000,
  57.     0x8762,0x2000,0x8742,0x1000,0x8F1C,0x8800,0x97D9,0x2400,
  58.     0x8BC8,0x5400,0x83C4,0xA400,0x81D2,0x4C00,0x82D2,0x9800,
  59.     0x8105,0x3000,0x80E0,0xE000,0x801F,0x8000,0x0000,0x0000,
  60.     0x0000,0x0000,
  61.     /* Plane 2 */
  62.     0x0000,0x0100,0x7FA1,0x0000,0x7E00,0x4000,0x2883,0x2400,
  63.     0x542B,0x1000,0x3007,0x4800,0x6886,0x6400,0x200C,0xD200,
  64.     0x5013,0xA200,0x3423,0x5200,0x4809,0xA200,0x0419,0x4600,
  65.     0x0202,0x0E00,0x0100,0x1E00,0x4000,0x7E00,0x8000,0x0000,
  66.     0x0000,0x0000
  67. };
  68.  
  69. struct Image quitImg =
  70. {
  71.     0, 0,        /* LeftEdge, TopEdge */
  72.     26, 17, 3,    /* Width, Height, Depth */
  73.     quitData,    /* ImageData */
  74.     0x0007, 0x0000,    /* PlanePick, PlaneOnOff */
  75.     NULL        /* NextImage */
  76. };
  77.  
  78. static char *GetMBString(APTR ref)
  79. {
  80.         char *aux;
  81.  
  82.         aux = GetShutDown_SystemString(ref);
  83.         if (aux[1] == '\0') return(&aux[2]);
  84.         else                return(aux);
  85. }
  86.  
  87. struct ObjApp * CreateApp(void)
  88. {
  89.         struct ObjApp * Object;
  90.  
  91.         APTR    grpMain, grpSelect, imageQuestion, grpOptions, labSelect, grpAction;
  92.         APTR    Space_0;
  93.  
  94.         if (!(Object = AllocVec(sizeof(struct ObjApp),MEMF_PUBLIC|MEMF_CLEAR)))
  95.                 return(NULL);
  96.  
  97.         Object->radOptionsContent[0] = GetMBString(MSG_radOptions0);
  98.         Object->radOptionsContent[1] = GetMBString(MSG_radOptions1);
  99.         Object->radOptionsContent[2] = NULL;
  100.  
  101.         imageQuestion = ImageObject,
  102.                 MUIA_Image_OldImage,&quitImg,
  103.                 MUIA_Frame, MUIV_Frame_ImageButton,
  104.                 MUIA_FixHeight, 64,
  105.                 MUIA_FixWidth, 40,
  106.         End;
  107.  
  108.         labSelect = Label(GetMBString(MSG_labSelect));
  109.  
  110.         Object->radOptions = RadioObject,
  111.                 MUIA_Background, MUII_SelectedBack,
  112.                 MUIA_Frame, MUIV_Frame_String,
  113.                 MUIA_ControlChar, GetShutDown_SystemString(MSG_radOptions)[0],
  114.                 MUIA_Radio_Entries, Object->radOptionsContent,
  115.         End;
  116.  
  117.         grpOptions = GroupObject,
  118.                 MUIA_Background, MUII_RequesterBack,
  119.                 MUIA_Frame, MUIV_Frame_Prop,
  120.                 Child, labSelect,
  121.                 Child, Object->radOptions,
  122.         End;
  123.  
  124.         grpSelect = GroupObject,
  125.                 MUIA_Frame, MUIV_Frame_Group,
  126.                 MUIA_Group_Horiz, TRUE,
  127.                 Child, imageQuestion,
  128.                 Child, grpOptions,
  129.         End;
  130.  
  131.         Object->butOk = SimpleButton(GetMBString(MSG_butOk));
  132.  
  133.         Space_0 = HVSpace;
  134.  
  135.         Object->butCancel = SimpleButton(GetMBString(MSG_butCancel));
  136.  
  137.         grpAction = GroupObject,
  138.                 MUIA_Group_Horiz, TRUE,
  139.                 Child, Object->butOk,
  140.                 Child, Space_0,
  141.                 Child, Object->butCancel,
  142.         End;
  143.  
  144.         grpMain = GroupObject,
  145.                 Child, grpSelect,
  146.                 Child, grpAction,
  147.         End;
  148.  
  149.         Object->winChoose = WindowObject,
  150.                 MUIA_Window_Title, GetMBString(MSG_winChoose),
  151.                 MUIA_Window_ID, MAKE_ID('0', 'W', 'I', 'N'),
  152.                 MUIA_Window_CloseGadget, FALSE,
  153.                 MUIA_Window_DepthGadget, FALSE,
  154.                 MUIA_Window_DragBar, FALSE,
  155.                 MUIA_Window_SizeGadget, FALSE,
  156.                 MUIA_Window_NoMenus, TRUE,
  157.                 MUIA_Window_ScreenTitle,"AmyShutDown "__AMIGADATE__" © 1997 Infinity Labs Development Organization",
  158.                 WindowContents, grpMain,
  159.         End;
  160.  
  161.         Object->App = ApplicationObject,
  162.                 MUIA_Application_Author, "Manolis S. Pappas",
  163.                 MUIA_Application_Base, "AmyShutDown",
  164.                 MUIA_Application_Title, "ShutDown System?",
  165.                 MUIA_Application_Version, "$VER: ShutDown 1.00 "__AMIGADATE__,
  166.                 MUIA_Application_UseCommodities,FALSE,
  167.                 MUIA_Application_UseRexx,FALSE,
  168.                 SubWindow, Object->winChoose,
  169.         End;
  170.  
  171.  
  172.         if (!Object->App)
  173.         {
  174.                 FreeVec(Object);
  175.                 return(NULL);
  176.         }
  177.  
  178.         DoMethod(Object->butOk,
  179.                 MUIM_Notify, MUIA_Pressed, FALSE,
  180.                 Object->App,
  181.                 2,
  182.                 MUIM_Application_ReturnID, OK
  183.                 );
  184.  
  185.         DoMethod(Object->butCancel,
  186.                 MUIM_Notify, MUIA_Pressed, FALSE,
  187.                 Object->winChoose,
  188.                 3,
  189.                 MUIM_Set, MUIA_Window_Open, FALSE
  190.                 );
  191.  
  192.         DoMethod(Object->butCancel,
  193.                 MUIM_Notify, MUIA_Pressed, FALSE,
  194.                 Object->App,
  195.                 2,
  196.                 MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit
  197.                 );
  198.  
  199.         DoMethod(Object->winChoose,
  200.                 MUIM_Window_SetCycleChain, Object->radOptions,
  201.                 Object->butOk,
  202.                 Object->butCancel,
  203.                 0
  204.                 );
  205.  
  206.         set(Object->winChoose,
  207.                 MUIA_Window_Open, TRUE
  208.                 );
  209.  
  210.  
  211.         return(Object);
  212. }
  213.  
  214. void DisposeApp(struct ObjApp * Object)
  215. {
  216.         MUI_DisposeObject(Object->App);
  217.         FreeVec(Object);
  218. }
  219.